﻿#ifndef NSSHARE_SYS_APPLICATION_H_
#define NSSHARE_SYS_APPLICATION_H_

#include "../platform.h"
#include "../utils/disallow_copy_and_assign.h"
#include "../base/base_object.h"
#include "options_parser.h"

namespace nsshare
{
namespace sys
{

class Application : public base::BaseObject
{
public:


    static std::string GetModuleFullName();

    static std::string GetExecutableFullName();

    static void * instance();

    static void Exit(int exit_code);

    static void Terminate(int exit_code);
    //获取进程命令行参数
    static const Options & GetOptions();
private:
    /*
    Application apply monostate pattern.
    don't need to create a instance.
    */
    Application();
    ~Application();
    DISALLOW_COPY_AND_ASSIGN(Application);
};




}
}

#endif